type annotiations partial support added