Index: bin/calc
===================================================================
--- bin/calc	(revision 0)
+++ bin/calc	(revision 0)
@@ -0,0 +1,52 @@
+#!/usr/bin/env python
+
+import sys
+from stamper import Stamper
+
+
+def usage(name):
+    msg = """
+    Usage:
+
+    To gather information of recorded times: %(name)s
+
+    Recorded times for a given customer: %(name)s customer
+
+    Detailed times for a given customer: %(name)s customer details
+    """ % {'name': name}
+    print(msg)
+
+
+if __name__ == '__main__':
+
+    s = Stamper()
+    s.load_stamps()
+
+    if len(sys.argv) == 1:
+        totals = s.totals()
+        print('Total times for all customers:')
+        for t in totals:
+            print(' -> %(customer)s: %(total)s' % {'customer': t,
+                                                   'total': totals[t]})
+    elif len(sys.argv) == 2:
+        if sys.argv[1] in s.customers():
+            print('Total time for %(customer)s: %(total)s' % {
+                'customer': sys.argv[1],
+                'total': s.total_by_customer(sys.argv[1])
+                })
+
+    elif len(sys.argv) == 3:
+        if sys.argv[1] in s.customers():
+            print('Detailed time for %(customer)s' % {
+                'customer': sys.argv[1],
+                })
+            details, totals = s.details_by_customer(sys.argv[1])
+            for day in details:
+                print('------ %(day)s ------' % {'day': day})
+                for line in details[day]:
+                    print(line)
+                print(' Total: %(total)s' % {'total': totals[day]})
+
+    else:
+        usage(sys.argv[0])
+        sys.exit(1)
Index: bin/stamp
===================================================================
--- bin/stamp	(revision 71)
+++ bin/stamp	(revision 0)
@@ -3,5 +3,5 @@
 import sys
 from datetime import datetime
-from stamper.stamper import Stamper
+from stamper import DATE_FORMAT, Stamper
 
 
@@ -24,8 +24,7 @@
     if len(sys.argv) == 1:
         # stamp!
-        s.stamp(datetime.today().strftime(s.datetime_format),
-                None, None, None)
+        s.stamp(datetime.today().strftime(DATE_FORMAT), None, None, None)
 
-    elif len(sys.argv) >= 3:
+    elif len(sys.argv) == 3:
         # record!
         last_stamp = s.last_stamp()
@@ -33,8 +32,6 @@
         if not current_start:
             current_start = last_stamp['start']
-        customer = sys.argv[1]
-        description = ' '.join(sys.argv[2:])
-        s.stamp(current_start, datetime.today().strftime(s.datetime_format),
-                customer, description)
+        s.stamp(current_start, datetime.today().strftime(DATE_FORMAT),
+                sys.argv[1], sys.argv[2])
 
     else:
Index: bin/stamp2json
===================================================================
--- bin/stamp2json	(revision 18)
+++ 	(revision )
@@ -1,83 +1,0 @@
-#!/usr/bin/env python
-
-import json
-import sys
-from argparse import ArgumentParser
-from os.path import expanduser, isfile, isdir
-
-
-def args_cmd():
-    """Parse the command line arguments via argparse"""
-    parser = ArgumentParser(description='Convert tool from txt to json format')
-    parser.add_argument(
-        '--input', '-i', default=expanduser('~/.workstamps.txt'),
-        help='Input filename (default ~/.workstamps.txt')
-    parser.add_argument(
-        '--output', '-o', default=expanduser('~/.workstamps.json'),
-        help='Input filename (default: ~/.workstamps.json)')
-    return parser.parse_args()
-
-
-def itemify(line):
-    """Split a line, returning date and the rest of data"""
-    line = line.strip()
-    end_time = line[:16]
-    info = line[17:]
-    return(line[:16], line[17:])
-
-
-if __name__ == '__main__':
-    args = args_cmd()
-
-    stamps = []
-
-    with open(args.input, 'r') as infile:
-
-        for line in infile:
-            time, info = itemify(line)
-
-            if info == 'start':
-                customer = None
-                action = None
-                start_time = time
-                end_time = None
-
-            elif time == 'restarttotals':
-                continue
-
-            else:
-                info_items = info.split(' ', 1)
-                customer = info_items[0]
-                action = ''
-                if len(info_items) > 1:
-                    action = info_items[1].lstrip('- ')
-                # if the previous line was not a start line, took the previous
-                # line end time as start time
-                if end_time is not None:
-                    start_time = end_time
-                end_time = time
-
-            stamps.append({
-                'start': start_time,
-                'end': end_time,
-                'customer': customer,
-                'action': action,
-            })
-
-    if isfile(args.output):
-        print('[warning] %(out)s already exist'
-              % {'out': args.output})
-        confirm = raw_input('overwrite? (y/n) ')
-        while confirm not in ['y','n','Y','N']:
-            confirm = raw_input('overwrite? (y/n) ')
-        if confirm in ['n', 'N']:
-            print('[warning] exiting without converting')
-            sys.exit()
-
-    elif isdir(args.output):
-        print('[error] %(out)s is a directory, remove it first'
-              % {'out': args.output})
-        sys.exit(1)
-
-    with open(args.output, 'w') as stamps_file:
-        json.dump(stamps, stamps_file, indent=4)
Index: bin/stamps
===================================================================
--- bin/stamps	(revision 71)
+++ 	(revision )
@@ -1,34 +1,0 @@
-#!/usr/bin/env python
-
-from stamper.cli import build_args_parser
-from stamper.stamper import Stamper
-
-
-if __name__ == '__main__':
-
-    parser = build_args_parser()
-    args = parser.parse_args()
-
-    s = Stamper()
-    s.load_stamps()
-
-    # Set proper arguments if they have passed a date-based filter without
-    # a customer
-    if args.customer not in s.customers and not args.filter:
-        args.filter = args.customer
-        args.customer = None
-
-    # Call the proper methods, based on the given parameters
-    if args.timeline:
-        s.timeline(args.customer, args.filter, args.description)
-    elif args.delete:
-        s.remove_stamps(args.delete)
-    elif args.graph:
-        s.graph_stamps(args.customer, args.filter, args.description)
-    elif args.import_file:
-        s.import_stamps(args.import_file)
-    elif args.push:
-        s.push_stamps(args.customer, args.filter, args.description)
-    else:
-        s.show_stamps(args.customer, args.filter, args.verbose, args.sum,
-                      args.description)
Index: bin/time_sum
===================================================================
--- bin/time_sum	(revision 14)
+++ 	(revision )
@@ -1,47 +1,0 @@
-#!/usr/bin/env python
-
-import sys
-import time
-
-TIME_FORMAT= "%H:%M"
-HOURS_DAY = 8
-SECS_DAY = HOURS_DAY * 60 * 60
-
-def usage(name):
-    msg = """
-time_sum.py: Sum dates in proper hour time
-
-Params: Worked hours
-Syntax: $ ./time_sum 6:45 13:48 12:44 8:28 14:43
-56:28 min. = 7 days, remaining: 0:28 (8 hours/day)
-"""
-    print(msg)
-    exit(1)
-
-def isTimeFormat(input):
-    try:
-        time.strptime(input, TIME_FORMAT)
-        return True
-    except ValueError:
-        return False
-
-
-if __name__ == '__main__':
-
-    totalSecs = 0
-    for param in sys.argv[1:]:
-        if not isTimeFormat(param):
-            print("Invalid hour format: %s" % param)
-            help()
-            exit(1)
-        timeParts = [int(s) for s in param.split(':')]
-        totalSecs += (timeParts[0] * 60 + timeParts[1]) * 60
-
-    totalDays, remaining = divmod(totalSecs, SECS_DAY)
-    remainingMin, remainingSec = divmod(remaining, (60))
-    remainingHr, remainingMin = divmod(remainingMin, (60))
-
-    totalSecs, sec = divmod(totalSecs, 60)
-    hr, min = divmod(totalSecs, 60)
-    print "%d:%02d hours. = %d days, remaining: %d:%02d (%d hours/day)" % (
-        hr, min, totalDays, remainingHr, remainingMin, HOURS_DAY)
